# 作者: 赵若云
# 2025年02月21日15时36分53秒
# 3478783573@qq.com
import os
from time import strftime
from time import gmtime


def use_rename():
    os.rename('dir1/file3', 'dir1/file4')


def use_remove():
    """
    remove 删除普通文件,不能删除文件夹
    :return:
    """
    os.remove('dir1/file4')


def use_listdir():
    """
    目录列表
    :return:
    """
    print(os.listdir('..'))  # 到上一级


def use_rmdir():
    """
    删除目录（删空目录）
    :return:
    """
    os.rmdir('dir1')  # 若不是空的，会报错


def use_chdir():
    """
    改变路径，只改变当前进程的路径,并不会对Pycharm造成影响
    :return:
    """
    print(os.getcwd())
    os.chdir('dir1')
    file = open('file5.txt', 'w')
    file.close()
    print(os.getcwd())


def scan_dir(path, width):
    """
    深度优先遍历
    :param path:
    :return:
    """
    file_name_list = os.listdir(path)  # os.listdir(目录名)
    for file_name in file_name_list:
        print(' ' * width + file_name)  # 打印名字
        new_path = path + '/' + file_name  # 拼接为正确的路径
        if os.path.isdir(new_path):  # 是文件夹返回True，会递归
            scan_dir(new_path, width + 4)


# inode信息，里面存了文件大小，id，最后修改时间，文件权限等等信息……
def use_stat():
    file_info = os.stat('file1')
    print('size{},uid{},mode{:x},mtime{}'.format(file_info.st_size, file_info.st_uid,
                                                 file_info.st_mode, file_info.st_mtime))
    # 把秒数转为字符串时间 # st_mtime像1740119610.4101489这样的数字，所以要用strftime转化
    print(strftime("%Y-%m-%d %H:%M:%S", gmtime(file_info.st_mtime)))


if __name__ == '__main__':
    # use_rename()
    # use_remove()
    # use_listdir()
    # use_rmdir()
    # use_chdir()
    # scan_dir('.', 0)
    use_stat()
